package modelo;

import java.util.Collection;
import java.util.LinkedList;

import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;
import fiuba.algo3.titiritero.modelo.ObjetoVivo;

public abstract class Municion implements ObjetoPosicionable,ObjetoVivo{
	
	private final static int PRIMER_TURNO = 1;
	protected int costo;
	protected boolean usada;
	protected Coordenada posicionDeLaMunicion;
	protected Collection<Coordenada> posicionesQueDania;
	protected int periodoValidez;
	protected int turnoDeCreacion;
	protected int turnoActual;
	
	public Municion(Coordenada posicion){
		
		this.usada = false;
		this.costo = 0;
		this.posicionDeLaMunicion = posicion;
		this.posicionesQueDania = new LinkedList<Coordenada>();
		this.turnoDeCreacion = PRIMER_TURNO;
		this.turnoActual = PRIMER_TURNO;
		
	}
	
	@Override
	public void vivir(){
		
		turnoActual++;
		
	}

	@Override
	public int getX() {
		return (this.posicionDeLaMunicion.getX())*75;
	}

	@Override
	public int getY() {
		return (this.posicionDeLaMunicion.getY())*50;
	}
	
	public Coordenada  getPosicionEnQueEstaLaMunicion(){
		
		return this.posicionDeLaMunicion;
	}
	
	public Collection<Coordenada> getPosicionesQueLaMunicionDania(){
		
		return this.posicionesQueDania;
		
	}
	
	public int getCosto(){
		
		return this.costo;
	}
	
	public boolean estaUsada(){
		
		return this.usada;
	}
	
	

	protected abstract void destruir (Nave nave);
	
	
	public void atacar(Nave nave) {
		
		if(this.turnoActual == this.turnoDeCreacion + this.periodoValidez)
			
			this.usada = true;
					
		if(!this.usada && nave != null)
					
			this.destruir(nave);
				
	}
}
